package com.ns.sbs.oauth.menu.vo;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ns.core.vo.bs.BasicVO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * 服务菜单
 * * @author : lw
 * * @version : v1.0.0
 * * @since : 2024-09-13 11:54:35
 */
@EqualsAndHashCode(callSuper = true)
@Data
@ToString
@Accessors(chain = true)
public class MenuEntryVO extends BasicVO {
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    /**
     * 菜单视图
     */
    private String name;
    /**
     * 图标
     */
    private String icon;
    /**
     * 菜单编码
     */
    private String code;
    /**
     * 地址
     */
    private String path;

    /**
     * 组件
     */
    private String component;

    /**
     * 菜单等级
     */
    private Integer level;
    /**
     * 是否固定
     */
    private Integer affix;

    /**
     * 是否隐藏
     */
    private Integer hidden;

    /**
     * 需要授权
     */
    private Integer isAuth;

    /**
     * 公用表示 0 非 1 是
     */
    private Integer commonFlag;

    /**
     * 子菜单唯一时，根菜单显示标识
     */
    private Integer alwaysShow;

    /**
     * 父级菜单
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long pid;

    /**
     * 选中的父级菜单
     */
    private List<List<String>> selectMenus;

    /**
     * 所属租户
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long rid;

    /**
     * 所属服务
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long sid;

    /**
     * 子菜单
     */
    private List<MenuEntryVO> children;
}
